<?php

if (!defined('IN_SEXMALL'))
{
	die('Hacking attempt');
}


/**
 * 加密函数
 * @param   string  $content    加密前的字符串
 * @param   string  $key    密钥
 * @return  string  加密后的字符串
 */
function encrypt($content, $key)
{
	$random = md5(mt_rand(1000, 100000)); //干扰码
	$key = md5($key);
	$len = strlen($content);

	$encrypt = '';
	for($i = 0; $i < $len; $i++)
	{
		$k = $i >= 32 ? 0 : $i;
		$encrypt .= $random[$k] . ($content[$i] ^ $random[$k]);
	}

	/* 二次加密 */
	$len = strlen($encrypt);
	$content = '';
	for($i = 0; $i < $len; $i++)
	{
		$k = $i >= 32 ? 0 : $i;
		$content .= $encrypt[$i] ^ $key[$k];
	}

	return base64_encode($content);
}


/**
 * 解密函数
 * @param   string  $content    加密后的字符串
 * @param   string  $key    密钥
 * @return  string  加密前的字符串
 */
function decrypt($content, $key)
{
	$key = md5($key);
	$content = base64_decode($content);
	$len = strlen($content);

	$decrypt = '';
	for($i = 0; $i < $len; $i++)
	{
		$k = $i >= 32 ? 0 : $i;
		$decrypt .= $content[$i] ^ $key[$k];
	}

	/* 二次解密 */
	$len = strlen($decrypt);
	$content = '';
	for($i = 0; $i < $len; $i++)
	{
		$key = $decrypt[$i];
		$i++;
		$content .= $decrypt[$i] ^ $key;
	}

	return $content;
}

/* 十进制转64进制 */
function dec2s4($dec)
{
	$base = array_merge(range(0,9),range('a','z'),range('A','Z'),array('*', '@'));
	$base = implode('', $base);
	$result = '';

	do {
		$result = $base[$dec % 64] . $result;
		$dec = intval($dec / 64);
	} while ($dec != 0);

	return $result;
}

/* 64进制转10进制 */
function  s42dec($sixty_four)
{
	$base_map = array_merge(range(0,9),range('a','z'),range('A','Z'),array('*', '@'));
	$base_map = array_flip($base_map);
	$result = 0;
	$len = strlen($sixty_four);

	for ($n = 0; $n < $len; $n++) {
		$result *= 64;
		$result += $base_map[$sixty_four{$n}];
	}

	return $result;
}

?>